package bigcong;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class work11 extends JFrame  {

    private static long xxxxxxL;
    private static final long serialVersionUID = xxxxxxL;

    JButton jiandao,shitou,bu,clear; //定义 JButton 对象；
    JPanel panel2,panel1; // 定义 JPanel 对象
    JLabel label; //	定义JLabel对象
    //设置窗体。构造函数
    public work11() {
        setTitle("石头剪刀布游戏"); //设置窗体标题，修改标题为“石头剪刀布游戏”；
        setLocation(250,250); //设置窗体左上顶点坐标；- 4 -
        setSize(400,350); //长度改为了400px。
        //根据需求建立对象，这里只需要 4 个 JButton 对象，2 个 JPanel 对象，1 个 JLabel 对象；
        panel1 =new JPanel(); // 实例化JPanel对象
        panel1.setBackground(Color.yellow); // 修改panel1的背景颜色 黄色
        shitou = new JButton("石头"); // 实例化 Jbutton 对象
        jiandao =new JButton("剪刀"); //实例化 Jbutton 对象
        bu = new JButton("布"); //实例化 Jbutton 对象
        clear = new JButton("清空"); //实例化 Jbutton 对象
        panel2=new JPanel(); // 实例化 JPanel2 对象
        panel2.setBackground(Color.green); // 修改JPanel2 背景颜色 为绿色
        label =new JLabel("选择剪刀、石头、布开始游戏"); // 新建一个Jlabel对象
        //设置按钮大小
        shitou.setPreferredSize(new Dimension(80,40));
        jiandao.setPreferredSize(new Dimension(80,40));
        bu.setPreferredSize(new Dimension(80,40));
        clear.setPreferredSize(new Dimension(80,40));
        //给所有 JButton 对象注册事件监听器；
        shitou.addActionListener(new jbutton());     //在事件触发后，调用actionPerformed 做相应处理
        jiandao.addActionListener(new jbutton());	//这里的this 指的是 本类中的成员方法（事件处理机制）
        bu.addActionListener(new jbutton());
        clear.addActionListener(new jbutton());

        // 把所有的新添加的对象都放进去窗体里面，先放进组件类，再放进窗体类
        panel1.add(shitou);//JPanel 默认布局 FlowLayOut 一直水平排列按钮。窗口大小不合适，可能会导致按钮无法显示
        panel1.add(jiandao);
        panel1.add(bu);
        panel1.add(clear);
        panel2.add(label);
        //定义 panel1 和panel2的 位置
        add(panel1, BorderLayout.NORTH); //JFrame类 继承的方法 用于添加组件
        add(panel2, BorderLayout.CENTER);//该语法 相当于 this.add  this 指的是窗体

        //创建菜单
        JMenuBar menuBar = new JMenuBar();// 创建菜单栏对象
        setJMenuBar(menuBar);// 将菜单栏对象添加到窗体的菜单栏中

        JMenu menu1 = new JMenu("结果显示方式");// 创建菜单对象
        menuBar.add(menu1);// 将菜单对象添加到菜单栏对象中

        JMenuItem menuItem1 = new JMenuItem("文本显示");// 创建菜单项对象
        menuItem1.addActionListener(new ItemListener());// 为菜单项添加事件监听器
        menu1.add(menuItem1);// 将菜单项对象添加到菜单对象中

        JMenuItem menuItem2 = new JMenuItem("图形显示");// 创建菜单项对象
        menuItem2.addActionListener(new ItemListener());// 为菜单项添加事件监听器
        menu1.add(menuItem2);// 将菜单项对象添加到菜单对象中

        JMenuItem menuItem3 = new JMenuItem("结束游戏");// 创建菜单项对象
        menuItem3.addActionListener(new ItemListener());// 为菜单项添加事件监听器
        menu1.add(menuItem3);// 将菜单项对象添加到菜单对象中

        JMenu menu2 = new JMenu("关于游戏");// 创建菜单对象
        menuBar.add(menu2);// 将菜单对象添加到菜单栏对象中

        JMenuItem menuItem4 = new JMenuItem("小帅工作室");
        //menuItem4.addActionListener(new ItemListener());// 为菜单项添加事件监听器
        menu2.add(menuItem4);// 将菜单项对象添加到菜单对象中

        JMenuItem menuItem5 = new JMenuItem("联系方式：");
        //menuItem5.addActionListener(new ItemListener());// 为菜单项添加事件监听器
        menu2.add(menuItem5);// 将菜单项对象添加到菜单对象中

        JMenuItem menuItem6 = new JMenuItem("QQ：88888");
        //menuItem6.addActionListener(new ItemListener());// 为菜单项添加事件监听器
        menu2.add(menuItem6);// 将菜单项对象添加到菜单对象中
    }
    boolean flag = true;
    //jbutton实现 ActionListener 接口方法，使得按下按钮后执行方法里的代码	可以称为事件响应器；
    public class jbutton implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            int i = ((int)(Math.random()*10))%3;
            //System.out.print(i + " ");测试点击按钮是否正确相应代码
            if(flag) {
                if(e.getSource() == shitou) {
                    //int i = ((int)(Math.random()*10))%3;//电脑随机出拳  0代表石头 1代表剪刀 2代表布
                    switch(i) {
                        case 0:
                            label.setText("你出石头，电脑出石头，平局！"); //label 显示文本
                            break;
                        case 1:
                            label.setText("你出石头，电脑出剪刀，恭喜你赢了！");//label 显示文本
                            break;
                        case 2:
                            label.setText("你出石头，电脑出布，很遗憾你输了！");//label 显示文本
                            break;
                    }
                }else if(e.getSource() == jiandao){
                    //int i = ((int)(Math.random()*10))%3;//电脑随机出拳  0代表石头 1代表剪刀 2代表布
                    switch(i) {
                        case 0:
                            label.setText("你出剪刀，电脑出石头，很遗憾你输了！");//label 显示文本
                            break;
                        case 1:
                            label.setText("你出剪刀，电脑出剪刀，平局！");//label 显示文本
                            break;
                        case 2:
                            label.setText("你出剪刀，电脑出布，恭喜你赢了！");//label 显示文本
                            break;
                    }
                }else if(e.getSource() == bu){
                    //int i = ((int)(Math.random()*10))%3;//电脑随机出拳  0代表石头 1代表剪刀 2代表布
                    switch(i) {
                        case 0:
                            label.setText("你出布，电脑出石头，恭喜你赢了！");//label 显示文本
                            break;
                        case 1:
                            label.setText("你出布，电脑出剪刀，很遗憾你输了！");//label 显示文本
                            break;
                        case 2:
                            label.setText("你出布，电脑出布，平局！");//label 显示文本
                            break;
                    }
                }else if(e.getSource() == clear) {
                    label.setText("选择剪刀, 石头, 布开始游戏！");//label 显示文本
                }
            }else {
                if(e.getSource() == shitou) {
                    //int i = ((int)(Math.random()*10))%3;//电脑随机出拳  0代表石头 1代表剪刀 2代表布
                    switch(i) {
                        case 0:
                            label.setIcon(new ImageIcon("src\\FingerGuess\\shitouequalshitou.png")); //label 显示图片
                            label.setText("");//设置文本为空
                            break;
                        case 1:
                            label.setIcon(new ImageIcon("src\\FingerGuess\\shitouwinjiandao.png"));//label 显示图片
                            label.setText("");//设置文本为空
                            break;
                        case 2:
                            label.setIcon(new ImageIcon("src\\FingerGuess\\shitoudefeatbu.png"));//label 显示图片
                            label.setText("");//设置文本为空
                            break;
                    }
                }else if(e.getSource() == jiandao){
                    //int i = ((int)(Math.random()*10))%3;//电脑随机出拳  0代表石头 1代表剪刀 2代表布
                    switch(i) {
                        case 0:
                            label.setIcon(new ImageIcon("src\\FingerGuess\\jiandaodefeatshitou.png"));//label 显示图片
                            label.setText("");//设置文本为空
                            break;
                        case 1:
                            label.setIcon(new ImageIcon("src\\FingerGuess\\jiandaoequaljiandao.png"));//label 显示图片
                            label.setText("");//设置文本为空
                            break;
                        case 2:
                            label.setIcon(new ImageIcon("src\\FingerGuess\\jiandaowinbu.png"));//label 显示图片
                            label.setText("");//设置文本为空
                            break;
                    }
                }else if(e.getSource() == bu){
                    //int i = ((int)(Math.random()*10))%3;//电脑随机出拳  0代表石头 1代表剪刀 2代表布
                    switch(i) {
                        case 0:
                            label.setIcon(new ImageIcon("src\\FingerGuess\\buwinshitou.png"));//label 显示图片
                            label.setText("");//设置文本为空
                            break;
                        case 1:
                            label.setIcon(new ImageIcon("src\\FingerGuess\\budefeatjiandao.png"));//label 显示图片
                            label.setText("");//设置文本为空
                            break;
                        case 2:
                            label.setIcon(new ImageIcon("src\\FingerGuess\\buequalbu.png"));//label 显示图片
                            label.setText("");//设置文本为空
                            break;
                    }
                }else if(e.getSource() == clear) {
                    label.setText("选择剪刀, 石头, 布开始游戏！");//label 显示文本
                    label.setIcon(new ImageIcon("sec\\FingerGuess\\white.png"));//设置显示图片为空
                }
            }
        }
    }
    //ItenListener 实现ActionListener接口，用于给菜单栏添加事件处理机制
    public class ItemListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            //JMenuItem menuItem = (JMenuItem) e.getSource();
            //System.out.println("您单击的是菜单项：" + menuItem.getText());测试点击菜单按钮是否有相应的过程代码
            if(e.getActionCommand().equals("图形显示")) {
                ImageIcon icon1 = new ImageIcon("src\\FingerGuess\\shitou.png");//实例化图片对象
                ImageIcon icon2 = new ImageIcon("src\\FingerGuess\\jiandao.png");
                ImageIcon icon3 = new ImageIcon("src\\FingerGuess\\bu.png");
                ImageIcon icon4 = new ImageIcon("src\\FingerGuess\\clear.jpg");
                icon1.setImage(icon1.getImage().getScaledInstance(40,40,0));//设置图片大小 ，适配按钮大小
                icon2.setImage(icon2.getImage().getScaledInstance(40,40,0));
                icon3.setImage(icon3.getImage().getScaledInstance(40,40,0));
                icon4.setImage(icon4.getImage().getScaledInstance(40,40,0));
                shitou.setText("");//修改按钮文本为空
                jiandao.setText("");
                bu.setText("");
                clear.setText("");
                shitou.setIcon(icon1);//给按钮添加图片
                jiandao.setIcon(icon2);
                bu.setIcon(icon3);
                clear.setIcon(icon4);
                //修改label 显示图形
                flag = false;//修改flag 改变显示效果
            }
            if(e.getActionCommand().equals("文本显示")) {
                shitou.setText("石头");
                jiandao.setText("剪刀");
                bu.setText("布");
                clear.setText("清空");
                shitou.setForeground(Color.black);
                jiandao.setForeground(Color.black);
                bu.setForeground(Color.black);
                clear.setForeground(Color.black);
                ImageIcon icon1 = new ImageIcon(" ");

                shitou.setIcon(icon1);
                jiandao.setIcon(icon1);
                bu.setIcon(icon1);
                clear.setIcon(icon1);
                //修改label 显示文本
                flag = true;//修改flag 改变显示方式
                label.setIcon(new ImageIcon(" "));//设置显示图片为空
                label.setText("选择剪刀, 石头, 布开始游戏！");//设置文本显示文字
            }
            if(e.getActionCommand().equals("结束游戏")) {
                System.exit(0);//退出
            }

        }
    }
    //主函数 测试
    public static void main(String[] args) {
        work11 frame = new work11();	//声明并实例化对象
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     // 设置窗体关闭按钮
        frame.setVisible(true);                                  // 使窗体可见
    }
}
